/**
 * 分割输入框
 */

package com.hundsun.yr.universal.library.widget;

import com.hundsun.yr.universal.library.utils.HsNumberUtils;

import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.TextView;



/**
 * @Title: HSDivisionTextView.java 
 * @Description: 分割文本
 * @date 2016-1-21 上午11:04:23 
 * @author:hejun.shen
 * @email:shenhj15971@hundsun.com 
 * @replace author:
 * @replace date:
 * @version V1.0   
 */
public class HSDivisionTextView extends TextView {

	/* 每组的长度 */
	private Integer eachLength = 4;
	/* 分隔符 */
	private String delimiter = " ";

	private String text = "";
	
	/*判断是否为手机号3-4-4显示，或者银行卡4-4-4显示*/
	private Mode MODE=Mode.PHONE;

	public HSDivisionTextView(Context context) {
		super(context);
		init();
	}

	public HSDivisionTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();

	}

	public HSDivisionTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		init();
	}

	/**
	 * 初始化
	 */
	public void init() {

		// 内容变化监听
		this.addTextChangedListener(new DivisionTextWatcher());
	}
	
	
	/**
	 * 设置显示模式
	 * @param mode
	 */
	public void setMode(Mode mode){
		this.MODE=mode;
	}
	
	
	public static enum Mode{
		PHONE,//电话3-4-4模式
		BANCKCARD,//银行卡4-4-4模式
		MONEY;//钱3，3，3模式
	}

	/**
	 * 文本监听
	 * 
	 * @author Administrator
	 * 
	 */
	private class DivisionTextWatcher implements TextWatcher {

		@Override
		public void afterTextChanged(Editable s) {
		}

		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
		}

		@Override
		public void onTextChanged(CharSequence s, int start, int before,
				int count) {
			
			division(s.toString(), count);
		}
	}
	
	
	/**
	 * 分割字符串
	 * @param content 字符串内容
	 * @param count 字符串长度
	 */
	public void division(String content,int count){
		
		
		
		// 统计个数
		int len = content.length();
		if (len < eachLength)// 长度小于要求的数
			return;
		if (count > 1) {// 设置新字符串的时候，直接返回
			return;
		}
		// 如果包含空格，就清除
		char[] chars = content.replace(" ", "").toCharArray();
		len = chars.length;
		// 每4个分组,加上空格组合成新的字符串
		StringBuffer sb = new StringBuffer();
		
		if(MODE==Mode.PHONE){
			for (int i = 0; i < len; i++) {
				if(i<6){
					if(i==3){
						sb.append(" ");
						sb.append(chars[i]);// 添加字符
					}else{
						sb.append(chars[i]);// 添加字符
					}
				}else{
					if ((i-3) % eachLength == 0 && i != 0)// 每次遍历到4的倍数，就添加一个空格
					{
						sb.append(" ");
						sb.append(chars[i]);// 添加字符
					} else {
						sb.append(chars[i]);// 添加字符
					}
				}
			}
			text = sb.toString();
		}else if(MODE==Mode.BANCKCARD){
			for (int i = 0; i < len; i++) {
				if (i % eachLength == 0 && i != 0)// 每次遍历到4的倍数，就添加一个空格
				{
					sb.append(" ");
					sb.append(chars[i]);// 添加字符
				} else {
					sb.append(chars[i]);// 添加字符
				}
			}
			text = sb.toString();
		}else if(MODE==Mode.MONEY){
			if(len>5){
//				for (int i = len-1; i >=0; i--) {
//					if (i % eachLength == 0 && i != 0)// 每次遍历到3的倍数，就添加一个逗号
//					{
//						sb.append(",");
//						sb.append(chars[i]);// 添加字符
//					} else {
//						sb.append(chars[i]);// 添加字符
//					}
//				}
				
				text = HsNumberUtils.moneyThousandsFormat(content);
				
			}else{
				text = content;
			}
		}
		
		// 设置新的字符到文本
//		 System.out.println("*************" + sb.toString());
//		text = sb.toString();
		setText(text);
	}
	
	
	/**
	 * 设置初始值
	 * @param content
	 */
	public void setFirstText(String content){
		division(content, 0);
	}


	/** 得到每组个数 */
	public Integer getEachLength() {
		return eachLength;
	}

	/** 设置每组个数 */
	public void setEachLength(Integer eachLength) {
		this.eachLength = eachLength;
	}

	/** 得到间隔符 */
	public String getDelimiter() {
		return delimiter;
	}

	/** 设置间隔符 */
	public void setDelimiter(String delimiter) {
		this.delimiter = delimiter;
	}

}
